package io.dbw.common.utils;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
　* @description: 系统工具类
　* @author lxc
　* @date 2021/1/29 14:05
*/
@Slf4j
public class StringUtil {
	/**
	 * 字符串是否为数字，包含小数
	 * @param str
	 */
	public static boolean isNumber(String str){
		String reg = "^[0-9]+(.[0-9]+)?$";
		return str.matches(reg);
	}

	/**
	 * 检查邮箱
	 * 
	 * @param eMail
	 * @return
	 */
	public static boolean isEmail(String eMail) {
		return eMail.matches("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
	}
	/**
	 * 检查手机号
	 * 
	 * @param telNum
	 * @return
	 */
	public static boolean isMobiPhoneNum(String telNum) {
		String regex = "^1[3|4|5|7|8|9][0-9]\\d{8}$";
		Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
		Matcher m = p.matcher(telNum);
		return m.matches();
	}

	/**
	 * 随机生成短信验证码 功能描述：
	 * 
	 * @author: 李新春
	 * @date: 2019年3月23日 下午1:48:40
	 *
	 */
	public static synchronized String getRandom() {
		int  code = (int)((Math.random()*9+1)*100000);
		if(code<100000){
			log.info("code------>:"+code);
			return getRandom();
		}
		return String.valueOf(code);
	}

	/**
	 * 密码校验（包含大写字母、小写字母、数字、特殊符号（不是字母，数字，下划线，汉字的字符）的6位以上16位以下组合）
	 * @param
	 * @return
	 */
	public static boolean isPassword(String password) {
		String regex = "^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)[a-zA-Z0-9\\W]{6,16}$";
		return password.matches(regex);
	}
	
	public static String toString(Object obj) {
    	return toString(obj, StringUtils.EMPTY);
    }

	public static boolean isNotEmpty(Object obj) {
		return !isEmpty(obj);
	}
    public static boolean isEmpty(Object obj) {
        return null==obj || StringUtils.isBlank(obj.toString());
    }

    public static String toString(Object obj,String def) {
    	if(isEmpty(obj)) {return def;}
        return obj.toString().trim();
    }


    public synchronized static String getUUID() {
    	return UUID.randomUUID().toString().replace("-", "");
    }

	/**
	　* @description: 验证密码是否包含数字和英文，并且长度为8
	　* @author lxc
	　* @date 2021/2/7 15:39
	*/
	private static String REGEX_1=".*[a-zA-z].*";
	private static String REGEX_2=".*[0-9].*";
	public static boolean checkPassword(String password){
		if( password.length()>=8
				&& password.matches(REGEX_1)
				&& password.matches(REGEX_2)){
			return true;
		}
		return  false;
	}

	/**
	 * 获取随机昵称
	 * 随机生成昵称规则：
	 * （1）随机昵称为15位
	 * （2）第一位由26位英文字母（不分大小写）随机生成，后面14位为年月日时分秒
	 * 举例：A20210923104852
	 * @return
	 */
//	public static String getRandomNickName() {
//		String name = "";
//		char c = (char)(int)(Math.random()*26+65);
//		String date = DateUtils.getDate("yyyyMMddHHmmss");
//		name = name + c + date;
//		return name;
//	}

    public static void main(String[] args) {
//		String errorMsg= StringUtils.EMPTY;
//		System.out.println(StringUtils.isNotBlank(errorMsg));
		for (int i=0;i<10;i++) {
			log.info(getRandom());
		}
	}
}
